package com.example.myDesignPatterns.结构型模式.装饰者模式Decorator;

public class explain {
    /**
     * 我们先来看一个快餐店的例子。
     * 快餐店有炒面、炒饭这些快餐，可以额外附加鸡蛋、火腿、培根这些配菜，当然加配菜需要额外加钱，
     * 每个配菜的价钱通常不太一样，那么计算总价就会显得比较麻烦。
     * 使用继承的方式存在的问题：
     * 扩展性不好
     * 如果要再加一种配料（火腿肠），我们就会发现需要给FriedRice和FriedNoodles分别定义一
     * 个子类。如果要新增一个快餐品类（炒河粉）的话，就需要定义更多的子类。
     * 产生过多的子类
     * 定义：
     * 指在不改变现有对象结构的情况下，动态地给该对象增加一些职责（即增加其额外功能）的模式。
     */

    /**
     * 饰者模式可以带来比继承更加灵活性的扩展功能，使用更加方便，
     * 可以通过组合不同的装饰者对象
     * 来获取具有不同行为状态的多样化的结果。
     * 装饰者模式比继承更具良好的扩展性，完美的遵循开闭原则，
     * 继承是静态的附加责任，装饰者则是动态的附加责任。
     * 装饰类和被装饰类可以独立发展，不会相互耦合，
     * 装饰模式是继承的一个替代模式，装饰模式可以动态扩展一个实现类的功能。
     */
}
